package cn.iocoder.yudao.module.im.service;

import cn.iocoder.yudao.module.im.dal.dataobject.ImGroupAnnouncementDO;

import java.util.List;

/**
 * 群公告服务接口
 *
 * @author 芋道源码
 */
public interface ImGroupAnnouncementService {

    /**
     * 发布群公告
     *
     * @param groupId 群组ID
     * @param title 公告标题
     * @param content 公告内容
     * @param creatorId 创建者ID
     * @return 公告ID
     */
    Long publishAnnouncement(Long groupId, String title, String content, Long creatorId);

    /**
     * 获取群公告详情
     *
     * @param announcementId 公告ID
     * @return 群公告
     */
    ImGroupAnnouncementDO getAnnouncement(Long announcementId);

    /**
     * 获取群组的公告列表
     *
     * @param groupId 群组ID
     * @param pageSize 分页大小
     * @param pageNum 页码
     * @return 公告列表
     */
    List<ImGroupAnnouncementDO> getGroupAnnouncements(Long groupId, Integer pageSize, Integer pageNum);

    /**
     * 获取群组的最新公告
     *
     * @param groupId 群组ID
     * @return 最新的群公告
     */
    ImGroupAnnouncementDO getLatestAnnouncement(Long groupId);

    /**
     * 更新群公告
     *
     * @param announcementId 公告ID
     * @param title 公告标题
     * @param content 公告内容
     * @param updaterId 更新者ID
     * @return 是否更新成功
     */
    boolean updateAnnouncement(Long announcementId, String title, String content, Long updaterId);

    /**
     * 删除群公告
     *
     * @param announcementId 公告ID
     * @param operatorId 操作人ID
     * @return 是否删除成功
     */
    boolean deleteAnnouncement(Long announcementId, Long operatorId);

}